package modelo.movimiento;

import java.util.ArrayList;
import java.util.Collection;

import modelo.tablero.Casilla;
import modelo.tablero.Direccion;

/**
 *
 *
 * @author Victor Del Rio
 */
public class MovimientoRecto implements TipoDeMovimiento {


	public Collection<Casilla> casillasPermitidas(Casilla casillaOrigen) {
		
		Collection<Casilla> casillasPermitidas = new ArrayList<Casilla>();
		
		casillasPermitidas.addAll(casillasPermitidas(casillaOrigen, Direccion.ARRIBA));
		casillasPermitidas.addAll(casillasPermitidas(casillaOrigen, Direccion.IZQUIERDA));
		casillasPermitidas.addAll(casillasPermitidas(casillaOrigen, Direccion.ABAJO));
		casillasPermitidas.addAll(casillasPermitidas(casillaOrigen, Direccion.DERECHA));
		
		return casillasPermitidas;
	}

	private Collection<Casilla> casillasPermitidas(Casilla casillaActual, Direccion direccion) {
		
		Collection<Casilla> casillasPermitidas = new ArrayList<Casilla>();
		
		while (casillaActual.hayCasillaVecina(direccion) && casillaActual.getCasillaVecina(direccion).estaVacia()) {
			
			casillaActual = casillaActual.getCasillaVecina(direccion);
			casillasPermitidas.add(casillaActual);
		}
		
		return casillasPermitidas;
	}

}
